package com.cskaoyan.javase._2polymorphic._2advantage.parameter;
/**
 * 思考:
 *    方法的形参和方法调用时,传入的实参数据类型需要完全保持一致吗?
 *    不需要,只需要实参的数据类型能够自动类型转换到形参数据类型即可
 *
 *    我们已经测试过基本数据类型了,那么引用数据类型可以吗?
 *    也可以,通过向上转型
 *      如果方法的形参是一个父类类型
 *      那么具体到方法调用时,传入的实参对象,可以是子类类型
 *
 * 同样的,方法的具体返回值和方法的返回值类型,也同样具有这种特点!
 * 可以允许出现自动类型转换
 *
 * @since 16:16
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        test(10);
        test(10L);
        test(10F);

        test(new Father());
        test(new Son());
    }

    public static void test(double a){}

    /*
        该方法需要传入一个Father对象
        也可以传入一个Father的子类对象
        因为Son --> Father是自动类型转换
     */
    public static void test(Father f){}

    public static Father test(){
        // return new Father();
        return new Son();
    }
}
class Father{}
class Son extends Father{}